﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Test2.Model;

namespace Test2.View
{
    public partial class ToonOverzicht : Form, iUpdatable
    {
        iDatabaseRepository databaseRepository = Database.Instance.GetDatabase;

        public ToonOverzicht()
        {
            InitializeComponent();
        }

        private void ToonOverzicht_Load(object sender, EventArgs e)
        {
            VulKlanten();
        }
        public void VulKlanten() {
            DataTable dtKlanten = new DataTable();
            dtKlanten = databaseRepository.getKlanten();
            BindingSource bs = new BindingSource(); //BindingSource zou de tabel up to date moeten houden (als er een nieuwe Klant wordt toegevoegd)
            bs.DataSource = dtKlanten;
            dgvKlanten.DataSource = null;
            dgvKlanten.DataSource = bs;
            if (dgvKlanten.ColumnCount > 7)
            {
                dgvKlanten.Columns[0].Visible = false; // klantID verbergen
                dgvKlanten.Columns[1].HeaderText = "Voornaam";
                dgvKlanten.Columns[2].HeaderText = "Naam";
                dgvKlanten.Columns[3].HeaderText = "Adres";
                dgvKlanten.Columns[4].HeaderText = "Plaats";
                dgvKlanten.Columns[5].HeaderText = "Postcode";
                dgvKlanten.Columns[6].HeaderText = "Telefoon";
                dgvKlanten.Columns[7].HeaderText = "Email";
                dgvKlanten.Columns[8].Visible = false; //modify_date verbergen
            }
            dgvFacturen.DataSource = null;
            dgvFactuurDetails.DataSource = null;
        }

        private void dgvKlanten_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvKlanten.SelectedRows.Count > 0)
            {
                int id = Int32.Parse(dgvKlanten.Rows[e.RowIndex].Cells[0].Value.ToString());
                DataTable dtFacturen = new DataTable();
                dtFacturen = databaseRepository.getFacturenByKlantID(id);
                BindingSource bs = new BindingSource();
                bs.DataSource = dtFacturen;
                dgvFacturen.DataSource = null;
                dgvFacturen.DataSource = bs;
                if (dgvFacturen.ColumnCount > 5)
                {
                    dgvFacturen.Columns[0].Visible = false; // factuurID verbergen
                    dgvFacturen.Columns[1].Visible = false; // klantID verbergen
                    dgvFacturen.Columns[2].HeaderText = "Factuurnummer";
                    dgvFacturen.Columns[3].HeaderText = "Datum";
                    dgvFacturen.Columns[4].HeaderText = "Opmerkingen";
                    dgvFacturen.Columns[4].Width = 400;
                    dgvFacturen.Columns[5].Visible = false; // betreffende klanten verbergen
                }
               dgvFactuurDetails.DataSource = null;
            }
        }

        private void dgvFacturen_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvFacturen.SelectedRows.Count > 0)
            {
                int id = Int32.Parse(dgvFacturen.Rows[e.RowIndex].Cells[0].Value.ToString());
                DataTable dtFactuurDetails = new DataTable();
                dtFactuurDetails = databaseRepository.getFactuurDetailsByFactuurID(id);
                BindingSource bs = new BindingSource();
                bs.DataSource = dtFactuurDetails;
                dgvFactuurDetails.DataSource = null;
                dgvFactuurDetails.DataSource = bs;
                if (dgvFactuurDetails.ColumnCount > 5)
                {
                    dgvFactuurDetails.Columns[0].Visible = false; // factuurDetailsID verbergen
                    dgvFactuurDetails.Columns[1].Visible = false; // factuurID verbergen
                    dgvFactuurDetails.Columns[2].HeaderText = "Artikel";
                    dgvFactuurDetails.Columns[3].HeaderText = "Prijs (€)";
                    dgvFactuurDetails.Columns[4].HeaderText = "BTW (%)";
                    dgvFactuurDetails.Columns[5].Visible = false; // facturen verbergen
                }
            }
        }

        private void btnNieuweFactuur_Click(object sender, EventArgs e)
        {
            new NieuweFactuur(this).Show();
        }

        /// <summary>
        /// Opent NieuweKlant met de data van de geselecteerde Klant ingevuld.
        /// </summary>
        private void btEditKlant_Click(object sender, EventArgs e)
        {
            if (dgvKlanten.SelectedRows.Count == 1)
            {
                int klantID = Int32.Parse(dgvKlanten.SelectedRows[0].Cells[0].Value.ToString());
                new NieuweKlant(this, klantID).Show();
            }
            else
            {
                MessageBox.Show("Gelieve één klant te selecteren.");
            }
        }

        public void updateKlanten()
        {
            VulKlanten();
        }

        private void btNieuweKlant_Click(object sender, EventArgs e)
        {
            new NieuweKlant(this).Show();
        }

        private void btUpdateKlanten_Click(object sender, EventArgs e)
        {
            updateKlanten();
        }
    }
}
